package com.kylin.common.security.service.handler;

import com.kylin.common.security.config.LoginProperties;
import com.kylin.common.security.domain.LoginUser;

import javax.servlet.http.HttpServletRequest;

/**
 * 登录处理
 * @author wuhao
 * @version 1.0 - 2022/10/10
 */
public interface LoginHandler {

    /**
     * 登录处理
     * @param request request请求
     * @return
     * @author wuhao
     * @since 2.6.0 - 2022/10/10
     */
     LoginUser handle(HttpServletRequest request);

    /**
     * 是否支持该授权模式处理
     * @param grantType 授权模式
     * @return
     * @author wuhao
     * @since 2.6.0 - 2022/10/10
     */
     boolean supports(String grantType);
     
     /**
      * 获取授权模式
      * @return
      * @author wuhao
      * @since 2.6.0 - 2023/1/31
      */
     String getGrantType();

     /**
      * 获取过期时间
      * @return
      * @author wuhao
      * @since 2.6.0 - 2023/1/31
      */
     @Deprecated
     default long getExpireTimes() {
         return 0;
     }

     /**
      * 获取个性化登录配置
      * @return
      * @author wuhao
      * @since 2.6.0 - 2023/2/4
      */
     default LoginProperties getLoginProperties() {
         return new LoginProperties();
     }
}
